package com.tm.dk.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tm.dk.mapper.UserMapper;
import com.tm.dk.service.UserService;
import com.tm.entity.SysUserEntity;
import com.tm.exception.utils.JwtUtils;
import com.tm.exception.utils.MD5Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Map;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, SysUserEntity> implements UserService {
    @Autowired
    private UserMapper userMapper;

    public Map login(String username, String password) {
        // 声明返回值
        HashMap rs=new HashMap();
        // 验证密码了
        //第一步 先根据账号 查询数据  mybatis plus 怎么查询数据 querywrapper
        // 构建条件对象
        QueryWrapper<SysUserEntity> where =new QueryWrapper<SysUserEntity>();
        //设置条件
        where.eq("username",username);
        //执行查询
        SysUserEntity user = userMapper.selectOne(where);
        //账号不存在的情况
        if(user==null){
            rs.put("status",1);
            rs.put("info","账号不存在");
            return rs;
        }
        //账号已存在   比较密码
        String pwd = user.getPassword(); //这是正确的密码  密文  数据库
        // 验证的密码为 password   明文  前台传过来的
        // 怎么比较密码   将密码加密 比对数据库密文
        // 重点是必须知道怎么加密  （相同的加密方法）
        // 将明文密码进行加密 md5(md5（密码）+盐)
        String s = MD5Utils.md5(MD5Utils.md5(password) + username);
        //比较结果
        Jedis jedis = new Jedis("192.168.3.103",6379);
        if(!s.equals(pwd)) {
            rs.put("status", 2);
            rs.put("info", "密码错误");
        }




        rs.put("status",3);
        rs.put("info","登陆成功");


        String token = JwtUtils.createToken(user, 24 * 60 * 60);//用JWT放到token中,便于前台认证


        rs.put("token",token);
        // 将用户的信息 保存到 session中去  记住用户  下次请求 能识别到是谁啊
        // 怎么向session中存值  1 得到session  》request 》怎么得到呢  2 给session设置值
        //HttpSession session = request.getSession();
        //给session 设置值  用户的所有信息 保存到session中了


        return rs;
    }

}
